package middlewares

import (
	"github.com/gin-gonic/gin"
	"xy_api/pkg/api"
	"xy_api/pkg/jwt"
)

func AuthJWT() gin.HandlerFunc {
	return func(c *gin.Context) {

		// 从标头 Authorization:Bearer xxxxx 中获取信息，并验证 JWT 的准确性
		claims, err := jwt.NewJWT().ParserToken(c)

		// JWT 解析失败，有错误发生
		if err != nil {
			api.Fail(c, "用户信息错误")
			return
		}

		// JWT 解析成功，设置用户信息
		//userModel, _ := models.UserInfo(claims.UserID)
		//if userModel.ID == 0 {
		//	api.Fail(c, "找不到对应用户，用户可能已删除")
		//	return
		//}
		//
		// 将用户信息存入 gin.context 里，后续 auth 包将从这里拿到当前用户数据
		//c.Set("user_id", userModel.ID)
		//c.Set("user_name", userModel.Name)
		//c.Set("current_user", userModel)

		c.Set("user_id", claims.UserID)
		c.Set("user_name", claims.UserName)

		c.Next()
	}
}
